/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jsysacc.asistencia.model.dao.component.maestros;

import com.cerd.util.BaseSP01.JUtilBaseSP01;
import com.jsysacc.asistencia.model.beans.maestros.ControlAsistencia;
import com.jsysacc.asistencia.model.dao.design.maestros.IControlAsistenciaDAO;
import com.jsysacc.asistencia.model.dao.ds.Cnx;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import org.joda.time.DateTime;

/**
 *
 * @author Carlos
 */
public class ControlAsistenciaDAO extends JUtilBaseSP01 implements IControlAsistenciaDAO {

    private Connection cnx = null;
    private PreparedStatement pst = null;
    private Statement stm = null;
    private ResultSet rs = null;
    private CallableStatement cs = null;

    @Override
    public boolean insert(ControlAsistencia entity) throws SQLException {
        cnx = Cnx.getConnection();
        cnx.setAutoCommit(false);
        try {

            String sql = " INSERT INTO " + Cnx.getSchema() + ".t_control_asistencias(\n"
                    + "             tip_ctr, swt_aut, fec_ctr, cla_ctr, num_ide, hor_ing_rea, \n"
                    + "            hor_sal_rea, min_tar, min_sbt, min_per, usu_aut, observa, est_per, \n"
                    + "            hor_ing, hor_sal, hor_per, min_tar_ant, mot_tar, usu_reg, fec_reg)\n"
                    + "    VALUES ( ?, ?, ?, ?, ?, ?, \n"
                    + "            ?, ?, ?, ?, ?, ?, ?, \n"
                    + "            ?, ?, ?, ?, ?, ?, ?); ";

            pst = cnx.prepareStatement(sql);
            int pos = 1;
            pst.setString(pos++, entity.getTip_ctr());
            pst.setString(pos++, entity.getSwt_aut());
            pst.setDate(pos++, toDateTimeSQL(entity.getFec_ctr()));
            pst.setString(pos++, entity.getCla_ctr());
            pst.setString(pos++, entity.getNum_ide());
            pst.setString(pos++, entity.getHor_ing_rea());
            pst.setString(pos++, entity.getHor_sal_rea());
            pst.setInt(pos++, entity.getMin_tra());
            pst.setInt(pos++, entity.getMin_sbt());
            pst.setInt(pos++, entity.getMin_per());
            pst.setString(pos++, entity.getUsu_aut());
            pst.setString(pos++, entity.getObserva());
            pst.setString(pos++, entity.getEst_per());
            pst.setString(pos++, entity.getHor_ing());
            pst.setString(pos++, entity.getHor_sal());
            pst.setString(pos++, entity.getHor_per());
            pst.setInt(pos++, entity.getMin_tar_ant());
            pst.setString(pos++, entity.getMot_tar());
            pst.setString(pos++, entity.getUsu_reg());
            pst.setTimestamp(pos++, toTimestampSQL(DateTime.now()));

            if (pst.executeUpdate() == 0) {
                throw new SQLException("ERROR AL INSERTAR EL REGISTRO");
            }
            cnx.commit();
            return true;
        } catch (SQLException ex) {
            cnx.rollback();
            throw new SQLException(ex.getMessage());
        } finally {
            try {
                if (pst != null) {
                    pst.close();
                }
                if (rs != null) {
                    rs.close();
                }
                if (cnx != null) {
                    cnx.close();
                }
            } catch (SQLException ex) {
                throw new SQLException(ex.getMessage());
            }
        }
    }

//    @Override
//    public boolean update(ControlAsistencia entity) throws SQLException {
//        String sql = "UPDATE " + Cnx.getSchema() + ".t_control_asistencias\n"
//                + "   SET cod_tip_asis=?, cod_hor=?, descrip_hor=?, swt_cor=?, \n"
//                + "       hor_ing_man=?, hor_ing_man_rea=?, hor_sal_man=?, hor_sal_man_rea=?, \n"
//                + "       hor_ing_tar=?, hor_ing_tar_rea=?, hor_sal_tar=?, hor_sal_tar_rea=?, "
//                + " min_tar_man = ?, min_tar_tar = ? \n"
//                + " WHERE fecha = ? AND num_ide = ? ";
//        cnx = Cnx.getConnection();
//        cnx.setAutoCommit(false);
//        try {
//            pst = cnx.prepareCall(sql);
//            int pos = 1;
//
//            pst.setString(pos++, entity.getCod_tip_asis());
//            pst.setString(pos++, entity.getCod_hor());
//            pst.setString(pos++, entity.getDescrip_hor());
//            pst.setString(pos++, entity.getSwt_cor());
//            pst.setString(pos++, entity.getHor_ing_man());
//            pst.setString(pos++, entity.getHor_ing_man_rea());
//            pst.setString(pos++, entity.getHor_sal_man());
//            pst.setString(pos++, entity.getHor_sal_man_rea());
//            pst.setString(pos++, entity.getHor_ing_tar());
//            pst.setString(pos++, entity.getHor_ing_tar_rea());
//            pst.setString(pos++, entity.getHor_sal_tar());
//            pst.setString(pos++, entity.getHor_sal_tar_rea());
//            pst.setInt(pos++, entity.getMin_tar_man());
//            pst.setInt(pos++, entity.getMin_tar_tar());
//            pst.setDate(pos++, toDateTimeSQL(entity.getFecha()));
//            pst.setString(pos++, entity.getNum_ide());
//
//            if (pst.executeUpdate() == 0) {
//                throw new SQLException("ERROR AL MODIFICAR EL REGISTRO");
//            }
//            cnx.commit();
//            return true;
//        } catch (SQLException ex) {
//            cnx.rollback();
//            throw new SQLException(ex.getMessage());
//        } finally {
//            try {
//                if (pst != null) {
//                    pst.close();
//                }
//                if (cnx != null) {
//                    cnx.close();
//                }
//            } catch (SQLException ex) {
//                throw new SQLException(ex.getMessage());
//            }
//        }
//    }
//
//    @Override
//    public boolean delete(DateTime fecha, String num_ide) throws SQLException {
//        String sql = " delete from " + Cnx.getSchema() + ".t_control_asistencias where fecha = ? AND num_ide = ? ";
//        cnx = Cnx.getConnection();
//        cnx.setAutoCommit(false);
//        try {
//            pst = cnx.prepareStatement(sql);
//            int pos = 1;
//            pst.setDate(pos++, toDateTimeSQL(fecha));
//            pst.setString(pos++, num_ide);
//
//            if (pst.executeUpdate() == 0) {
//                throw new SQLException("ERROR AL ELIMINAR EL REGISTRO");
//            }
//            cnx.commit();
//            return true;
//        } catch (SQLException ex) {
//            cnx.rollback();
//            throw new SQLException(ex.getMessage());
//        } finally {
//            try {
//                if (pst != null) {
//                    pst.close();
//                }
//                if (cnx != null) {
//                    cnx.close();
//                }
//            } catch (SQLException ex) {
//                throw new SQLException(ex.getMessage());
//            }
//        }
//    }
//
//    @Override
//    public ArrayList<ControlAsistencia> getAll() throws SQLException {
//        ArrayList<ControlAsistencia> lista = new ArrayList<>();
//        ControlAsistencia oControlAsistencia = null;
//        String sql = " select * from " + Cnx.getSchema() + ".t_control_asistencias order by id ";
//        cnx = Cnx.getConnection();
//        try {
//            pst = cnx.prepareStatement(sql);
//            rs = pst.executeQuery();
//            while (rs.next()) {
//                oControlAsistencia = new ControlAsistencia();
//                mapearBeanForRS(rs, oControlAsistencia);
//                lista.add(oControlAsistencia);
//            }
//        } catch (SQLException e) {
//            throw new SQLException(e.getMessage());
//        } finally {
//            try {
//                if (rs != null) {
//                    rs.close();
//                }
//                if (pst != null) {
//                    pst.close();
//                }
//                if (cnx != null) {
//                    cnx.close();
//                }
//            } catch (SQLException ex) {
//                throw new SQLException(ex.getMessage());
//            }
//        }
//
//        return lista;
//    }
//
//    @Override
//    public ArrayList<ControlAsistencia> getByCriterio(String criterio, String valor) throws SQLException {
//        ArrayList<ControlAsistencia> lista = new ArrayList<>();
//        ControlAsistencia oControlAsistencia = null;
//        String sql = " select * from " + Cnx.getSchema() + ".sp_t_personal_get_by_criterio(?, ?) ; ";
//        cnx = Cnx.getConnection();
//        try {
//            pst = cnx.prepareStatement(sql);
//            pst.setString(1, criterio);
//            pst.setString(2, valor);
//            rs = pst.executeQuery();
//            while (rs.next()) {
//                oControlAsistencia = new ControlAsistencia();
//                mapearBeanForRS(rs, oControlAsistencia);
//                lista.add(oControlAsistencia);
//            }
//        } catch (SQLException e) {
//            throw new SQLException(e.getMessage());
//        } finally {
//            try {
//                if (rs != null) {
//                    rs.close();
//                }
//                if (pst != null) {
//                    pst.close();
//                }
//                if (cnx != null) {
//                    cnx.close();
//                }
//            } catch (SQLException ex) {
//                throw new SQLException(ex.getMessage());
//            }
//        }
//
//        return lista;
//    }
//
//    @Override
//    public ControlAsistencia getByPk(DateTime fecha, String num_ide) throws SQLException {
//        ControlAsistencia oControlAsistencia = null;
//        String sql = " select * from " + Cnx.getSchema() + ".t_control_asistencias WHERE fecha = ?  AND num_ide = ? ; ";
//        cnx = Cnx.getConnection();
//        try {
//            pst = cnx.prepareStatement(sql);
//            int pos = 1;
//            pst.setDate(pos++, toDateTimeSQL(fecha));
//            pst.setString(pos++, num_ide);
//            rs = pst.executeQuery();
//            while (rs.next()) {
//                oControlAsistencia = new ControlAsistencia();
//                mapearBeanForRS(rs, oControlAsistencia);
//            }
//        } catch (SQLException e) {
//            throw new SQLException(e.getMessage());
//        } finally {
//            try {
//                if (rs != null) {
//                    rs.close();
//                }
//                if (pst != null) {
//                    pst.close();
//                }
//                if (cnx != null) {
//                    cnx.close();
//                }
//            } catch (SQLException ex) {
//                throw new SQLException(ex.getMessage());
//            }
//        }
//
//        return oControlAsistencia;
//    }

    @Override
    public boolean update(ControlAsistencia entity) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public boolean delete(DateTime fecha, String num_ide) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<ControlAsistencia> getAll() throws SQLException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<ControlAsistencia> getByCriterio(String criterio, String valor) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ControlAsistencia getByPk(DateTime fecha, String num_ide) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}
